ECS Fargate で tcpdump を取得してみた
アノテーション・テクニカルサポートチームの hato です。
トラブルシューティングのため ECS Fargate で tcpdump の取得を案内することがありますが、実際にやったことはなかったのでやってみました。
Fargate で tcpdump を取得する方法
いくつかの選択肢がありますが、今回は Amazon ECS Network Sidecar をサイドカーで起動し、ECS Exec でシェルアクセスしています。
なお、Amazon ECS Network Sidecar は AWS が提供するネットワーク関連のトラブルシューティングツールがインストールされたコンテナイメージです。
やってみた
Amazon ECS コンソールの「タスク定義」からサイドカーを追加するタスク定義名を選択します。
ベースとなるタスク定義を選択し、「新しいリビジョンの作成」→「新しいリビジョンの作成」をクリックします。
「コンテナを追加」をクリックします。
次の値を指定し、「作成」をクリックします。
- コンテナの詳細
- 名前:任意の名前(例:
amazon-ecs-network-sidecar
) - イメージ URI:
public.ecr.aws/aws-se/amazon-ecs-network-sidecar:latest
- 必須コンテナ:
いいえ
- 名前:任意の名前(例:
- 環境変数
- キー:
SIDECAR_RUN_MODE
- 値のタイプ:
値
- 値:
SLEEPER
- キー:
タスク定義が正常に作成されたことを確認します。
ECS サービスなどの設定を更新し、作成したタスク定義でタスクを実行します。
タスクが実行中になること確認して、ECS Exec でサイドカーに接続します。
aws ecs execute-command \ --cluster 【ECS クラスター名】 \ --container amazon-ecs-network-sidecar \ --interactive --command "/usr/bin/zsh" \ --task 【ECS タスク ID】
_______ _______ _______ __ _ _______ _______ _ _ _ _____ ______ _ _ _______ _____ ______ _______ _______ _______ ______ |______ | |______ ___ | \ | |______ | | | | | | |_____/ |____/ ___ |______ | | \ |______ | |_____| |_____/ |______ |_____ ______| | \_| |______ | |__|__| |_____| | \_ | \_ ______| __|__ |_____/ |______ |_____ | | | \_ Version 2 of the helpful Amazon ECS Network Sidecar root@ip-10-0-0-10 ~ ❯
tcpdump コマンドを使用して、パケットキャプチャを取得します。
※対象 NIC は恐らくeth1
ですがifconfig
で確認してください
root@ip-10-0-0-10 ~ ❯ tcpdump -i eth1 src port 80 dropped privs to tcpdump tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes 01:01:01.123456 IP ip-10-0-0-10.ap-northeast-1.compute.internal.http > 203.0.113.0.31541: Flags [S.], seq 2170574848, ack 3119349296, win 62727, options [mss 8961], length 0
補足
/usr/bin
を確認する限り、ネットワーク関連のコマンド以外も使用できそうです。
クリックするとコマンド一覧を表示します
alias arch arpaname arping awk b2sum base32 base64 basename basenc bash bashbug bashbug-64 bg busctl cal ca-legacy captoinfo cat catchsegv cd chage chcon checksctp chfn chgrp chmem chmod choom chown chrt chsh cksum clear clockdiff cmp col colcrt colrm column comm command cp cpio crb csplit curl cut cyrusbdb2current date dbus-broker dbus-broker-launch dd debuginfo-install delv df dhcping diff diff3 dig dir dircolors dirmngr dirmngr-client dirname distro dmesg dnf dnf-3 dnstap-read dpkg dpkg-deb dpkg-divert dpkg-maintscript-helper dpkg-query dpkg-realpath dpkg-split dpkg-statoverride dpkg-trigger du echo egrep eject encguess env eqn ex expand expr factor fallocate false fc fg fgrep fincore find findmnt find-repos-of-install flock fmt fold free funzip g13 gapplication gawk gdbus gencat geqn getconf getent getopt getopts gio gio-querymodules-64 glib-compile-schemas gneqn gnroff gpasswd gpg gpg2 gpg-agent gpg-card gpgconf gpg-connect-agent gpg-error gpgme-json gpgparsemail gpgsm gpgsplit gpgtar gpgv gpgv2 gpg-wks-client gpg-wks-server gpic grep groff grops grotty groups gsettings gsoelim gtar gtbl gtroff gunzip gzexe gzip hardlink hash head hexdump homectl host hostid hostnamectl i386 iconv id infocmp infotocap install ionice ipcmk ipcrm ipcs iperf3 irqtop isosize jobs join journalctl kbxutil kill killall last lastb lastlog lchfn lchsh ldd ld.so link linux32 linux64 ln locale localectl localedef logger login loginctl logname look ls lsblk lscpu lsipc lsirq lslocks lslogins lsmem lsns mcookie md5sum mesg mkdir mkfifo mknod mktemp mmdblookup modulemd-validator more mount mountpoint mv namei nano nc ncat needs-restarting neqn netstat networkctl newgidmap newgrp newuidmap nice nl nmap nohup nping nproc nroff nsenter nslookup nsupdate numfmt od oomctl p11-kit package-cleanup paste pathchk peekfd perl perl5.32.1 perldoc pgrep pic piconv pidof pidwait pinentry pinentry-curses ping pinky pip pip-3 pip3 pip-3.9 pip3.9 pkaction pkcheck pkexec pkill pkla-admin-identities pkla-check-authorization pkttyagent pldd pmap pod2man pod2text pod2usage portablectl post-grohtml pr preconv pre-grohtml printenv printf prlimit prtstat ps pslog pstree pstree.x11 ptx pwd pwdx pwmake pwscore pydoc pydoc3 pydoc3.9 python3 python3.9 read readlink realpath rename renice repoclosure repodiff repo-graph repomanage repoquery reposync repotrack reset resolvectl rev rm rmdir rnano rpm rpm2archive rpm2cpio rpmdb rpmkeys rpmquery rpmverify runcon rvi rview rvim script scriptlive scriptreplay sctp_darn sctp_status sctp_test sdiff secret-tool sed seq setarch setpriv setsid setterm sg sh sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf skill slabtop sleep snice soelim soelim.groff sort sotruss split sprof ssh-keygen stat stdbuf stty su sum sync systemctl systemd-analyze systemd-ask-password systemd-cat systemd-cgls systemd-cgtop systemd-creds systemd-delta systemd-detect-virt systemd-dissect systemd-escape systemd-firstboot systemd-id128 systemd-inhibit systemd-machine-id-setup systemd-mount systemd-notify systemd-path systemd-resolve systemd-run systemd-socket-activate systemd-stdio-bridge systemd-sysext systemd-sysusers systemd-tmpfiles systemd-tty-ask-password-agent systemd-umount tabs tac tail tar taskset tbl tcptraceroute tee telnet test tic timedatectl timeout tload toe top touch tput tr tracepath traceroute traceroute6 troff true truncate trust tset tsort tty type tzselect uclampset ul ulimit umask umount unalias uname uname26 unexpand uniq unlink unshare unzip unzipsfx update-ca-trust uptime userdbctl users utmpdump uuidgen uuidparse vdir vi view vim vimdiff vimtutor vmstat w wait wall watch watchgnupg wc wdctl wget whereis which who whoami withsctp write x86_64 xargs xmlcatalog xmllint xmlwf xxd yes yum yum-builddep yum-config-manager yum-debug-dump yum-debug-restore yumdownloader yum-groups-manager zcat zcmp zdiff zdump zegrep zfgrep zforce zgrep zipgrep zipinfo zless zmore znew zsh zsoelim
参考資料
- Amazon ECS Network Sidecar (V2) - Amazon ECR Public Gallery
- デバッグ用にAmazon ECS Exec を使用 - Amazon ECS
- VPN パケット損失のトラブルシューティング | AWS re:Post
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。